package dataEncode;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;
import sun.misc.BASE64Encoder;

/**	
 * 	使用MD5加密password，生成md5_code密文
 * 	MD5算法不可逆，是国际比较通用的加密标准
 * 	但是目前已经可以通过碰撞法破解，安全性降低很多
 */
public class MD5Encode {	
	//public MD5Encode(){};
		public static String Encode(String password){
			MessageDigest md5;
			try {
				md5 = MessageDigest.getInstance("MD5");
				md5.update(password.getBytes());
				byte[] hashCode = md5.digest();				
				/* 使用BASE64将MD5加密后的password字节编码为长字符串
				 需要注意：BASE64Encoder类不是Java默认包中提供的类，可能会不安全*/ 				
				String md5_code = new String(new BASE64Encoder().encode(hashCode));
				return md5_code;
			} catch (NoSuchAlgorithmException e) {
				e.printStackTrace();
				return null;
			}
			
		}
		
		public static void main(String args[]){			
			Scanner scanner = new Scanner(System.in);
			System.out.println("请输入需要使用MD5算法加密的明文：");
			String content = scanner.next();
			System.out.println("使用MD5算法加密后的密文是：" + MD5Encode.Encode(content));		
		}
	}


